<?php
namespace AuctionCore\System;
//
// +------------------------------------------------------------------------+
// | PHP Version 5.4                                                        |
// +------------------------------------------------------------------------+
// | Copyright (c) All rights reserved.                                     |
// +------------------------------------------------------------------------+
// | 世纪车来车往(北京）网络科技有限公司 版权所有！                         |
// | TEL:010-63732365  HOTLINE:400-6688-365  EMAIL:clcw@clcw.com.cn         |
// | $Revision: 1.0 $                                                       |
// +------------------------------------------------------------------------+
// | Author: songaimin@clcw.com.cn  Blog:http://blog.csdn.net/samxx8        |
// +------------------------------------------------------------------------+
//


/**
* 拍卖系统异常类
* @author       爱民
*/
class AuctionException extends \Exception {

    public $is_clcw_custom = true;

    /**
    * 格式：[[code,msg][code,msg]]
    * 示例：array(array(10001,‘用户名不可以空'))
    * @var      array
    */
    public static $codes=array(
        '100000' => '系统'
        ,'100051' => 'Group类要求提供Auth对象'
        ,'100052' => 'Rule类要求提供Auth对象'
        ,'100053' => 'FountUser类要求提供Auth对象'
        ,'100054' => 'BackAccount类要求提供Auth对象'
        ,'100056' => '公告ID不能为空'
        ,'100057' => '公告不存在'
        ,'100058' => '公告标题不能为空'
        ,'100059' => '配置名称不能为空'
        ,'100060' => '配置名称不存在'
        ,'100061' => '配置值不能为空'
        ,'100062' => '配置已存在'
        ,'100063' => '配置ID不能为空'
        ,'100064' => '操作内容不能为空'
        ,'100065' => '抱歉，未找到卡卷信息'
        ,'100066' => '操作失败'
        ,'100067' => '请求非法'
        ,'100068' => '请求重复'

        ,'100021' => '抱歉，目前无法完成注册，换个时间再来试试吧。'
        ,'100022' => '抱歉，目前无法完成注册，换个时间再来试试吧。'
        ,'100070' => '您访问的页面不存在或已删除'

        ,'100080' => '抱歉，网络不给力，请稍后再试。'

        ,'200000' => '网站帐号'
        ,'200001' => '创建网站帐号,必须指定用户名!'
        ,'200002' => '创建网站帐号,必须指定密码!'
        ,'200003' => '修改密码，必须指定帐号名!'
        ,'200004' => '修改密码，新密码不可以为空!'
        ,'200005' => '用户名已经存在.'
        ,'200006' => '删除用户，必须指定用户名.'
        ,'200007' => '手机号不可以为空.'
        ,'200008' => '网站用户不能找到'
        ,'200009' => '更新头像无效'
        ,'200010' => '用户登录信息无效'
        ,'200020' => '请选择省份'
        ,'200021' => '请选择城市'
        ,'200022' => '帐号或密码错误'
        ,'200023' => '用户不存在'
        ,'200024' => '邀请人不存在！'
        ,'200025' => '该用户已存在'
        ,'200026' => '抱歉，您的帐号被禁用，请珍惜帐号'

        ,'200030' => '原密码不能为空'
        ,'200031' => '新密码不能为空'
        ,'200032' => '确认新密码不能为空'
        ,'200033' => '抱歉，原密码输入错误，请重新输入。'               //原密码不正确
        ,'200034' => '抱歉，新密码不能与原密码一致，请重新输入。'       //新密码与原密码一致，请重新输入
        ,'200035' => '抱歉，您已在其它设备登录，当前设备已经退出。'     //您在其它设备登录

        ,'200036' => '密码应由6-16位字符组成'
        ,'200037' => '抱歉，您的登录信息已经过期，请重新登录。'     //登录失效
        ,'200038' => '禁止与原密码相同!'
        ,'200039' => '抱歉，注册前请阅读并接受服务条款和隐私政策。'       //请阅读并接受使用条款和隐私条款

        ,'200060' => '恭喜，您查询城市没有限行政策。'          //您所在的城市不支持限行
        ,'200061' => '抱歉，暂时没有您查询城市的天气信息。'   //您所在的城市不支持天气
        ,'200062' => '恭喜，今日不限行。'                   //有限行政策不限行

        ,'200070' => '预约卖车信息正在处理中，请保持手机畅通，客服人员马上会与您联系。'
        ,'200071' => '抱歉，手机号码输入错误，请输入11位数字的手机号。'    //手机号码格式不正确

//        ,'200072' => '姓名不能为空'
//        ,'200073' => '定制意向不能为空'
        ,'200074' => '您尚未提交定制信息，请填写信息立刻定制。' //定制信息不存在
        ,'200075' => '预约定制信息正在处理中，请保持手机畅通，客服人员马上会与您联系。'
        ,'200076' => '手机号已使用'
        ,'200077' => '免费加盟信息正在处理中，请保持手机畅通，客服人员马上会与您联系。'
        ,'200078' => '预约估价信息正在处理中，请保持手机畅通，客服人员马上会与您联系。'

        ,'200080' => '设备ID不能为空'
        ,'200081' => '恭喜，验证码发送成功，请查询短信获得验证码。'
        ,'200082' => '抱歉，验证码发送失败，请点击重新发送验证码。'
        ,'200083' => '抱歉，验证码格式错误，请输入6位数字的验证码。'      //验证码不能为空
        ,'200084' => '抱歉，验证码格式错误，请输入6位数字的验证码。'      //验证码格式不对
        ,'200085' => '请先获取验证码'
        ,'200086' => '抱歉，验证码输入错误，请查询短信后重新输入验证码。'
        ,'200087' => '抱歉，验证码已过期，请点击重新发送验证码。'
        ,'200088' => '抱歉，今日获取验证码次数超过限制，请明日重试。'
        ,'200089' => '手机验证无效'
        ,'200090' => '抱歉，获取验证码太频繁，请稍后重试。'
        ,'200091' => '更新时间不能为空'



        ,'300000' => '员工帐号'
        ,'300001' => '创建后台帐号,必须指定用户名!'
        ,'300002' => '创建后台帐号,必须指定密码!'
        ,'300003' => '修改员工后台密码，必须指定帐号名!'
        ,'300004' => '修改员工后台密码，新密码不可以为空!'
        ,'300005' => '员工帐号已经存在'
        ,'300006' => '删除员工，必须指定用户名.'
        ,'300007' => '员工ID不能为空'
        ,'300008' => '操作无权限'
        ,'300009' => '密码错误'
        ,'300010' =>  '密码不能为空'
        ,'300011' => '员工姓名不可以为空'
        ,'300012' => '员工所属部门不能为空'

        ,'400000' => '车主信息有误'
        ,'400001' => '车主姓名不能为空'
        ,'400002' => '车主电话不能为空'
        ,'400003' => '帐号未开通此业务'
        ,'400004' => '车主ID不能为空'

        ,'500000' => '车商'
        ,'500001' => '车商ID不能为空'
        ,'500002' => '车商兴趣删除失败'
        ,'500003' => '同车辆同场次不能创建两个拍单'
        ,'500004' => '发生金额不能为空'
        ,'500005' => '提车人姓名不能为空'
        ,'500006' => '提车人ID不能为空'
        ,'500007' => '提车人不存在'
        ,'500008' => '提车人已存在'
        ,'500009' => '备注不能为空'
        ,'500010' => '继续跟踪原因不能为空'
        ,'500011' => '下次跟踪时间不能为空'
        ,'500012' => '车商不存在'
        ,'500013' => '暂无客户经理'
        ,'500014' => '请求列表类型不正确'
        ,'500015' => '输入金额有误，请重新输入'
        ,'500016' => '请输入整数'
        ,'500017' => '添加付款单失败'
        ,'500020' => '提车人身份证号已存在'

        ,'500051' => '保证金不足'
        ,'500052' => '冻结保证金出错'
        ,'500053' => '未发现冻结记录'
        ,'500054' => '冻结不能超过保证金总数'
        ,'500055' => '保证金操作,拍单号不可以空'
        ,'500056' => '没有这种保证金扣除方式'
        ,'500057' => '请登录您的车商帐号！'
        ,'500058' => '添加关注,参数有误!'
        ,'500059' => '取消关注,参数有误!'
        ,'500060' => '已关注,不能重复关注!'
        ,'500061' => '该车源尚有未结束的拍单，不能生成新的拍单'
        ,'500062' => '添加车商失败'
        ,'500063' => '请提供车商联系人身份证'
        ,'500064' => '请输入正确地身份证号'
        ,'500065' => '车商公司编码错误'
        ,'500066' => '车商公司已存在'
        ,'500067' => '保证金充值失败'
        ,'500068' => '设置车商组失败'
        ,'500069' => '创建车商账户失败'
        ,'500070' => '关联车商账户失败'
        ,'500071' => '您的账户不可用，请联系客服'
        ,'500072' => '请输入充值正确的金额'
        ,'500073' => '充值失败'
        ,'500074' => '解冻保证金出错'

        ,'600000' => '车源'
        ,'600001' => '车源ID不能为空'
        ,'600002' => '车源不存在'
        ,'600003' => '场次ID不能为空'
        ,'600004' => '车商联系人不能为空'
        ,'600005' => '联系人身份证不能为空'
        ,'600006' => '联系人电话不能为空'
        ,'600007' => '车源损伤部位不存在'
        ,'600008' => '车源修复历史不存在'

        ,'700000' => '拍单'
        ,'700001' => '场次信息有误'
        ,'700002' => '拍单号无效'
        ,'700003' => '过户费不能为空'
        ,'700004' => '过户公司不能为空'
        ,'700005' => '投标出价不能为空'
        ,'700006' => '不能重复投标'
        ,'700007' => '投标价不能低于或等于起拍价'
        ,'700008' => '竞标出价失败,其它车商已出价,请您重新出价!'
        ,'700009' => '不在竞标中，不可以出价!'
        ,'700010' => '场次ID不能为空'
        ,'700011' => '竞标开始时间不能为空'
        ,'700012' => '竞标结束时间不能为空'
        ,'700013' => '起拍价不能为空'
        ,'700014' => '佣金不能为空'
        ,'700015' => '过户费不能为空'
        ,'700016' => '付款人姓名不能为空'
        ,'700017' => '付款账号不能为空'
        ,'700018' => '付款银行不能为空'
        ,'700019' => '付款时间不能为空'
        ,'700020' => '订单已有过户记录'
        ,'700021' => '出价异常错误'
        ,'700022' => '用户没有开通拍卖'
        ,'700023' => '车源不在拍卖状态'
        ,'700024' => '保证金不够'
        ,'700025' => '出价不合法（该价别人已出）'
        ,'700026' => '竞拍时长不能为空'
        ,'700027' => '拍单ID不能为空'
        ,'700028' => '不能编辑，场次不存在'
        ,'700029' => '不能编辑，场次已开始'
        ,'700030' => '不能编辑，场次已结束'
        ,'700031' => '不能持续出价'
        ,'700032' => '你已出价请等待其它人出价'
        ,'700033' => '您出的价格，严重高于市场价,请再次出价!'
        ,'700034' => '投标价必须为大于零的正整数'
        ,'700035' => '投标价必须是100的整数倍'
        ,'700036' => '投标价格非法'
        ,'700037' => '投标出价失败'
        ,'700038' => '竞拍基价不能小于零'
        ,'700039' => '竞标价必须为大于零的正整数'
        ,'700040' => '竞标价格非法'
        ,'700041' => '投标已结束，出价不成功'
        ,'700042' => '车源编号不能为空'
        ,'700043' => '拍单编号已存在，请重试'



        ,'800000' => '其它'
        ,'800001' => '代金券ID不能为空'
        ,'800002' => '代金券类型不能为空'
        ,'800003' => '代金券面值不能为空'
        ,'800004' => '代金券数量不能为空'
        ,'800005' => '代金券开始日期不能为空'
        ,'800006' => '代金券结束不能为空'
        ,'800007' => '代金券创建失败'
        ,'800008' => '该类型的代金券已存在，请更换类型名称或面额'
        ,'800009' => '代金券类型ID不能为空'
        ,'800010' => '代金券发放数量不能为空'
        ,'800011' => '该类型面额的代金券数量不足'
        ,'800012' => '代金券使用失败'
        ,'800013' => '要使用的代金券不能为空'
        ,'800014' => '抱歉，您已完成付款，无法使用代金券。'
        ,'800015' => '所属公司不能为空'


        ,'800021' => '发送验证码失败，参数格式不正确'
        ,'800022' => '发送验证码失败,参数mobile不能为空'
        ,'800023' => '发送短信模板有误!'
        ,'800024' => '发送短信模板变量有误!'
        ,'800025' => '发送短信号码不可以空!'
        ,'800026' => '重置密码手机号不可以空!'

        ,'800050' => '参数不全或参数值不能为空!'
        ,'800051' => '恭喜，当前已是最新版本。'
        ,'800052' => '抱歉，更新版本暂时无法下载，请稍后重试。' //没有相应的版本!

        ,'900000' => '投诉或建议的内容不能为空'

        ,'1000001' => 'UID 不能为空'
        ,'1000002' => '列表类型不能为空'
        ,'1000003' => '抱歉，暂时无法使用经纪人功能，请联系我们的客服查询。'  //经纪人 ID 不能为空
        ,'1000004' => '经纪人不存在'
        ,'1000005' => '备注 UID 不能为空'
        ,'1000006' => '备注类型不能为空'
        ,'1000007' => '备注信息不能为空'
        ,'1000008' => '设置备注信息失败'
        ,'1000009' => '列表类型不能为空'
        ,'1000010' => '抱歉，暂时无法使用团队功能，请稍后重试。'    //团队 ID 不能为空
        ,'1000011' => 'time id 不能为空'
        ,'1000013' => '经纪人不存在'
        ,'1000014' => '抱歉，提现金额格式错误，请输入纯数字的提现金额。'    //请输入正确的金额
        ,'1000015' => '抱歉，申请提现失败，请输入小于余额的提现金额。' //申请提现失败，提现金额已超过您的余额。
        ,'1000016' => '抱歉，开户行不能为空，请输入正确的开户行信息。'
        ,'1000017' => '抱歉，银行卡号不能为空，请输入16-19位银行卡号。'
        ,'1000018' => '抱歉，每次申请提现的金额，必须大于100元。'
        ,'1000019' => '抱歉，银行卡号格式错误，请输入16-19位银行卡号。'
        ,'1000020' => '抱歉，该身份证号已绑定其它账号。'
        ,'1000021' => '抱歉，身份信息已设置。'

        ,'1100001' => '消息内容不能为空'
        ,'1100002' => '未查询到此消息'

        ,'1200001' => '请求数据失败,请稍后再试'
        ,'1200002' => '请求参数不合法'
        ,'1200003' => '数据已经存在'

        ,'1200010' => '查询不到数据'
        ,'1200011'=>'抱歉，车型不能为空，请选择车型。'
        ,'1200012'=>'抱歉，上牌时间不能为空，请选择上牌时间。'
        ,'1200013'=>'上牌时间格式不合法'
        ,'1200014'=>'抱歉，行驶公里数不能为空，请输入行驶公里数。'
        ,'1200015'=>'抱歉，车辆所在地不能为空，请选择车辆所在地。' //

        ,'1200021' =>'抱歉，车辆归属地不能为空，请选择车辆归属地。'
        ,'1200022' =>'抱歉，车牌号码不能为空，请填写6位车牌号码。'   //请填写车牌前缀
        ,'1200023' =>'抱歉，车牌号码不能为空，请填写6位车牌号码。'   //请填写车牌号码
        ,'1200024' =>'抱歉，发动机号不能为空，请填写发动机号。'                          //请填写发动机号

        ,'1200031' =>'抱歉，获取定位信息失败，请稍后重试。'       //请传入经度
        ,'1200032' =>'抱歉，获取定位信息失败，请稍后重试。'       //请传入纬度
        ,'1200033' =>'抱歉，获取定位信息失败，请稍后重试。'       //定位失败，请稍后再试
        ,'1200034' =>'抱歉，获取加油站信息失败，请稍后重试。'
        ,'1200035' =>'抱歉，获取加油站信息失败，请稍后重试。'      //油价数据错误!


        ,'1300001' => '合作伙伴ID不能为空'

        ,'1400001' => '抱歉，添加失败，该客户已存在，快去发展新的客户吧。'   //该客户已存在(手机或身份证已存在）
        ,'1400002' => '抱歉，添加失败，该客户已存在，快去发展新的客户吧。'   //该客户已经是网站用户，不能添加
        ,'1400003' => '抱歉，添加失败，该客户已存在，快去发展新的客户吧。'   //该客户最近提交的线索尚未处理完毕

        ,'1500001' => '抱歉，抬价失败，请稍后重试。'                  //抬价记录添加失败
        ,'1500002' => '抱歉，砍价失败，请稍后重试。'                  //砍价记录添加失败
        ,'1500003' => '抱歉，该辆车你已经抬价过了，不要太贪心哦。'
        ,'1500004' => '抱歉，该辆车你已经砍价过了，不要太贪心哦。'
        ,'1500005' => '抱歉，抬（砍）价失败，请稍后重试。'               //抬（砍）价类型不能为空
        ,'1500006' => '抱歉，抬（砍）价失败，请稍后重试。'               //抬（砍）价限额不能小于等于零
        ,'1500007' => '抱歉，抬（砍）价已结束，下回下手要快哦。'
        ,'1500008' => '抱歉，抬（砍）价失败，请稍后重试。'               //活动类型不正确
        ,'1500009' => '抱歉，不能给自己抬价，快去邀请好友帮忙抬价吧。'
        ,'1500010' => '抱歉，暂不支持4S店车源参与活动。'


        ,'1600000' => '抱歉，未找到相关卡卷信息。'
        ,'1600001' => '抱歉，抽奖活动已失效，请关注其它抽奖活动。'

        ,'1700001' => '车商争议记录ID参数无效，请联系管理员。'
        ,'1700002' => '车商争议处理结果获取失败。'
        ,'1700003' => '违约扣款金额无效。'
        ,'1700004' => '车商争议处理操作重复,请处理下一条数据。'
        ,'1700005' => '补偿金额无效。'
        ,'1700006' => '收款记录已存在'
        ,'1700007' => '抱歉,未找到争议记录'

        ,'1800001' => '添加违约处理记录失败。'
        ,'1800002' => '添加违约自收车辆处理记录失败。'

        ,'1900001' => '门店ID无效。'
        ,'1900002' => '获取门店信息失败。'
        
        ,'20000001' => '车主ID无效。'
        ,'20000002' => '获取车主信息失败。'

        ,'21000001' => '车商验车操作重复,请处理下一条数据。'
        ,'21000002' => '该操作不合法，车商争议已存在。'

        ,'22000001' => '车主争议处理操作重复,请处理下一条数据。'


        //3.2.  贷款申请接口
        ,'-1001000000' => '传入的out_user_code无效用户不存在。'
        ,'-1001000001' => '无效的产品ID。'
        ,'-1001000002' => '当前提交贷款金额不符合要求。'
        ,'-1001000003' => '非准入用户。'
        ,'-1001000004' => '申请金额大于可用金额。'
        ,'-1001000005' => '提交手续费金额与系统不匹配。'
        ,'-1001000006' => '提交手续费费率与系统不匹配。'
        ,'-1001000007' => '重复提交或贷款流程执行错误。'
        ,'-1001000008' => '针对车辆的贷款金额过大。'
        ,'-1001000009' => '当前贷款申请中的用户编号及车辆编号已经存在。'
        ,'-1001000010' => '当前场景订单号重复提交。'
        ,'-1001000011' => '当前用户贷款申请受限。'
        ,'-1001000012' => '用户所有贷款申请已确认且未还清的笔数到达上限。'
        ,'-1001000013' => '放款未完成前已申请的贷款笔数到达上限。'
        ,'-1001000014' => '提交的贷款期限类型不正确。'
        ,'-1001000015' => '当前客户提交的贷款期限不符。'
        ,'-1001000017' => '正常贷款流程手续费不能为空。'
        ,'-1001000021' => '车辆已经贷款成功。'
        ,'-1001000022' => '无可用授信额度，贷款申请拒绝。'
        ,'-1001000023' => '逾期金额超过500，贷款申请拒绝。'

        //3.4.  可用消费额度查询接口
        ,'-1002000000' => '无效的out_user_code。'
        ,'-1002000001' => '无效的产品ID。'
        ,'-1002000002' => '用户不存在。'

        //3.5.  交易额度查询接口
        ,'-1002000000' => '无效的out_user_code。'
        ,'-1002001001' => '无效的产品ID。'
        ,'-1002001004' => '车辆成交价格必须大于0。'


        //3.7.  贷款申请查询
        ,'-1001003000' => '无效的申请编号。'

        //3.8.  贷款申请取消接口
        ,'-1001004000' => '无效的申请编号。'
        ,'-1001004001' => '无效的产品ID。'

        //3.9.  贷款详情查询接口
        ,'-1001005000' => '无效的产品编号。'
        ,'-1001005001' => '无效的out_user_code。'

        //协议层错误代码
        ,'-10' => '无效的签名。'
        ,'-15' => '无效的业务操作。'
        ,'-20' => '无效的时间戳。'
        ,'-30' => '无效的数据返回格式。'
        ,'-40' => '访问的服务不存在。'
        ,'-50' => '用户不存在。'
        ,'-60' => '无效的签名方式。'
        ,'-70' => '采用DSA方式验证签名时没有找到用户的公钥。'
        ,'-80' => '用户没有权限访问服务。'
        ,'-81' => '权限已过期。'
        ,'-90' => '系统错误。'
        ,'-95' => '请求控制系统错误。'
        ,'-100' => '控制系统正在维护中。'


        //通用业务错误代码表
        ,'-10000' => '数据信息不能为空。'
        ,'-10001' => '数据字段长度超过最大值。'
        ,'-10002' => '数据类型错误, int型数据长度过长。'
        ,'-10003' => '数据类型错误, 小数点位数错误。'
        ,'-10004' => '数据类型错误, 只允许日期类型。'
        ,'-10005' => '数据类型错误, 只允邮件格式类型。'
        ,'-10006' => '数据不是给的常量编码。'
        ,'-10007' => '业务参数非法。'
        ,'-10008' => '系统异常包括保存表信息出错。'
        ,'-10009' => '系统业务异常。'
        ,'-10010' => '数据类型错误，bigint型数据长度过长。'

    );

    /**
    * 抛出异常
    * @param    int $code    异常码
    * @return   void
    */
    public static function make_throw($code) {
        throw new AuctionException(self::$codes[$code], $code);
    }



    /**
     * 自定义异常处理
     * @access public
     * @param mixed $e 异常对象
     */
    static public function appException($e) {
        if($e->is_clcw_custom){
            echo \AuctionCore\Common\Util::auto_jsonp_or_json($_REQUEST,array('msg'=>$e->getMessage(),'code'=>$e->getCode()));
            exit;
        }else{
            \Think\Think::appException($e);
        }
    }

    /**
         * 自定义h5 action异常处理
         * @access public
         * @param mixed $e 异常对象
         */
        static public function appH5Exception($e) {
            if($e->is_clcw_custom){
                echo '<!DOCTYPE html>
                    <html>
                        <head>
                            <meta charset="utf-8" />
                            <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
                            <title>错误信息</title>
                            <script src="'.get_style_cdnurl().'clcwapp/static/js/zepto.min.js" type="text/javascript"></script>
                            <script src="'.get_style_cdnurl().'clcwapp/static/js/appclient.js" type="text/javascript"></script>
                            <script>
                                appClient.toast('.$e->getCode().',\''.$e->getMessage().'\');
                                appClient.exit();
                            </script>
                        </head>
                        <body>
                        </body>
                    </html>
                ';
                exit;
            }else{
                \Think\Think::appException($e);
            }
        }

    /**
     * 自定义异常处理
     * @access public
     * @param mixed $e 异常对象
     */
    static public function webException($e) {
        if($e->is_clcw_custom){
            session('error_msg',$e->getMessage());
            session('error_code',$e->getCode());
            header('location:/Index/page_404');
            //echo \AuctionCore\Common\Util::auto_jsonp_or_json($_REQUEST,array('msg'=>$e->getMessage(),'code'=>$e->getCode()));
            exit;
        }else{
            \Think\Think::appException($e);
        }
    }

    static public function jsonException($e) {
        if($e->is_clcw_custom){
            unset($_REQUEST['callback']);
            echo \AuctionCore\Common\Util::auto_jsonp_or_json($_REQUEST,array('msg'=>$e->getMessage(),'code'=>$e->getCode()));
            exit;
        }else{
            \Think\Think::appException($e);
        }
    }


}
